/*********************************************************************

***********************************************************************/

#include "pbdata.h"//引入自定义公共头文件
#include "ringbuffer.h"


extern RingBuffer *gRingbuf;
void BSP_Configuration(void);//硬件初始化函数声明

/***********************************************************************
*   函 数 名: main
*   功能说明: c程序入口
*   形    参：无**
*   返 回 值: 错误代码(无需处理)
***********************************************************************/

void RS485_Send_T(uint8_t *pData, uint16_t len) {
    RS485_H;
    delay_ms(10);
    int i=0;
    for(i=0; i<len;i++) {
        // RS485_Send_Byte(p_data[i]);
        while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET);//等待发送完成
        USART_SendData8(USART2,pData[i]);
        while(USART_GetFlagStatus(USART2,USART_FLAG_TXE)==RESET);
    }
    //等待发送完成
    delay_ms(10);
    RS485_L;
    delay_ms(10);

}
int main(void)
{
  uint8_t tempBuf[200] = {0x12, 0x34, 0x55,0x66};
  BSP_Configuration();//硬件驱动初始化函数
  gRingbuf = RingBuffer_create(1024);


  
  while(1)//主程序循环，反复执行循环体里的语句
  {
    // UART_Demo();

    //RS485_Demo();
    //uint32_t free_space = (uint16_t)rb_free_space(gRingbuf);
    // uint32_t used_bytes = RingBuffer_available_data(gRingbuf);
    // if(used_bytes > 20) {
    //   //rb_read(gRingbuf, &used_bytes, tempBuf);
    //   //RingBuffer_read(gRingbuf, tempBuf, used_bytes);
    //   // rb_read(gRingbuf, tempBuf, bytes);
    //   //RS485_Send_Data(tempBuf, (uint16_t)used_bytes);
    // }
    delay_ms(1000);
    uint8_t data = 'a';
    UART_Send_Byte(data);
    // RS485_Send_T(tempBuf, 3);
    // RS485_H;
    RS485_Send_Data(tempBuf, 3);
    // RS485_Send_Byte(data);
    
  }
}


/***********************************************************************
*   函 数 名: BSP_Configuration
*   功能说明: 初始化硬件设备。只需要调用一次。该函数配置CPU寄存器和外设的寄存器并初始化一些全局变量。
*   形    参：无
*   返 回 值: 无
***********************************************************************/
void BSP_Configuration(void)
{    
    //以下为HSI为系统时钟 16M
    CLK_HSICmd(ENABLE);//开始内部高频RC 16M
    CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);//HSI为系统时钟
    CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);//不分频，即1分频，16M
    UART_Congfig();
    RS485_Congfig();
    // RS485_H;
    //LED_Init();
    rim();//打开总中断
}

/*断言函数：它的作用是在编程的过程中为程序提供参数检查*/
#ifdef USE_FULL_ASSERT
void assert_failed(u8* file,u32 line)
{
  while(1)
  {
  }
}
#endif

/************************ 论坛地址 www.zxkjmcu.com ******************************/